<?php

namespace V1\Model;
/**
 * 短信
 *
 * @property   $name Description
 * 
 * @author wangzhenxian
 * @package application.components 
 */
use Think\Model;
class SmsModel extends Model {
     
    protected $tableName        =   'common_sms';
    
    protected $_auto = array(
        array('send_time',NOW_TIME,self::MODEL_INSERT),
        array('expires_time','mt_data_expires',self::MODEL_INSERT,'function',MT_MAX_SMS_EXPIRE_TIME),
    );
    /**
     * 添加
     * @param type $uid 用户ID
     * @return type
     */
    public function addSms($phonenumber,$code,$sms_content)
    {
          $data = array(
                   'phonenumber' => $phonenumber,
                   'code' => $code,
                   'content' => $sms_content,
           );
           /* 添加sms */
           if($this->create($data)){
                   $id = $this->add();
                   return $id ? $id : 0; //0-未知错误，大于0-添加成功
           } else {
                   return $this->getError(); //错误详情见自动验证注释
           }
    }
    /**
     * 是否已经在预设的重发时间内发送过短信
     * @param type $phonenumber 手机号
     * @return bool true 存在 false 不存在
     */
    public function checkRepeatSms($phonenumber)
    {
         $where = array(
                   'phonenumber' => $phonenumber,
                   'status' => array('eq',1),
                   'send_time' => array('egt',  self::getRepeatSendSMSMaxTime()),
           );
          $result = $this->where($where)->find();
          return $result;
    }
    protected static function getRepeatSendSMSMaxTime()
    {
        return NOW_TIME - MT_MAX_REPEAT_SEND_SMS_EXPIRE_TIME;
    }
    /**
     * 短信是否在有效期内
     * @param type $phonenumber 手机号
     * @param type $code 短信验证码
     * @return bool true 有效 false 无效或不存在
     */
    public function checkExpireSmsCode($phonenumber,$code)
    {
           $where = array(
                   'phonenumber' => $phonenumber,
                   'status' => array('eq',1),
                   'code' => $code,
                   'expires_time' => array('gt',NOW_TIME),
           );
          $result = $this->where($where)->count();;
          return $result; 
    }
    /**
     * 更新短信状态
     * @param type $id 短信ID
     * @param type $status 发送状态：0已发送 1已确认 2已使用
     */
    public function updateStatus($id,$status)
    {
          $where = array(
                   'id' => $id,    
           );
           $this->where($where)->setField('status',$status);
    }
}
